home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagd_f.zip
/
EGAVGA.SWG
/
0001_BESTFADE.PAS.pas
next >
Wrap
Pascal/Delphi Source File
|
1993-05-28
|
1KB
|
90 lines
{
REYNIR STEFANSSON
Here is yet another fade-in routine. This one does a proportional fade
of all colours.
}
Program FadeDemo;
Uses
Crt;
Const
PelAddrRgR = $3C7;
PelAddrRgW = $3C8;
PelDataReg = $3C9;
Type
rgb = Record
r, g, b : Byte;
end;
Var
i : Integer;
ch : Char;
col : Array[0..63] of rgb;
Procedure GetCol(C : Byte; Var R, G, B : Byte);
begin
Port[PelAddrRgR] := C;
R := Port[PelDataReg];
G := Port[PelDataReg];
B := Port[PelDataReg];
end;
Procedure SetCol(C, R, G, B : Byte);
begin
Port[PelAddrRgW] := C;
Port[PelDataReg] := R;
Port[PelDataReg] := G;
Port[PelDataReg] := B;
end;
Procedure SetInten(b : Byte);
Var
i : Integer;
fr,
fg,
fb : Byte;
begin
For i := 0 to 63 DO
begin
fr := col[i].r * b div 63;
fg := col[i].g * b div 63;
fb := col[i].b * b div 63;
SetCol(i, fr, fg, fb);
end;
end;
begin
TextMode(LastMode);
For i := 0 to 63 DO
GetCol(i, col[i].r, col[i].g, col[i].b);
For i := 1 to 15 DO
begin
TextAttr := i;
WriteLn('Foreground colour = ', i : 2);
end;
ch := ReadKey;
For i := 63 DOWNTO 0 DO
begin
SetInten(i);
Delay(20);
end;
GotoXY(1, 1);
For i := 15 DOWNTO 1 DO
begin
TextAttr := i;
WriteLn('Foreground colour = ', i : 2);
end;
For i := 0 to 63 DO
begin
SetInten(i);
Delay(20);
end;
ch := ReadKey;
TextMode(LastMode);
end.